﻿
Imports System.Data
Imports VSModel
Imports Cls_Common

Partial Class Control_Customer_Create
    Inherits System.Web.UI.UserControl
    Private Shared ReadOnly log As log4net.ILog = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType)
#Region "Sub and Function "

    Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
        If Session("UserName") Is Nothing Or Session("HotelId") Is Nothing Then
            Response.Redirect("~/Login.aspx")
        End If
    End Sub

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If Not IsPostBack Then
            If Not Request("hc") Is Nothing Then
                txtPasspostnumber.Text = Request("hc")
            End If
            LoadDanhMuc()
        End If
    End Sub
    Protected Sub LoadDanhMuc()
        Using _data As New VSEntities
            Dim p = (From q In _data.Countries Select New With {.Title = q.CountryName, .Id = q.CountryCode}).ToList
            Dim itm As New ListItem("--- Chọn ---", "")
            'quoc tich
            With ddlCountryname
                .DataSource = p
                .DataTextField = "Title"
                .DataValueField = "Id"
                .DataBind()
                .Items.Insert(0, itm)
            End With
            'cua khau
            Dim k = (From q In _data.EntryGates Select New With {.Title = q.EntryGateName, .Id = q.EntryGateCode}).ToList
            With ddlGatename
                .DataSource = k
                .DataTextField = "Title"
                .DataValueField = "Id"
                .DataBind()
                .Items.Insert(0, itm)
            End With
            'muc dich
            Dim j = (From q In _data.EntryPurposes Select New With {.Title = q.EntryPurposeName, .Id = q.EntryPurposeCode}).ToList
            With ddlEntrypurposename
                .DataSource = j
                .DataTextField = "Title"
                .DataValueField = "Id"
                .DataBind()
                .Items.Insert(0, itm)
            End With
            'enable or disable hidChungCu
            Dim _HotelId As Integer = Session("HotelId")
            Dim _HotelTypeId = (From q In _data.Hotels Where q.Id = _HotelId Select q.HotelTypeId).FirstOrDefault
            If Not _HotelTypeId Is Nothing AndAlso _HotelTypeId = 6 Then
                hidChungCu.Value = 1
            Else
                hidChungCu.Value = 0
            End If

            'LoaiHoChieu 
            Dim md = (From q In _data.LoaiHoChieux Select New With {.Title = q.Name, .Id = q.Code}).ToList
            With ddlLoaiHoChieu
                .DataSource = md
                .DataTextField = "Title"
                .DataValueField = "Title"
                .DataBind()
                .Items.Insert(0, itm)
            End With
            ddlLoaiHoChieu.SelectedValue = "Hộ chiếu phổ thông"

            'LoaiThiThuc 
            Dim tt = (From q In _data.LoaiThiThucs Order By q.Sort Ascending Select New With {.Title = q.Name, .Id = q.Code}).ToList
            With ddlLoaiThiThuc
                .DataSource = tt
                .DataTextField = "Title"
                .DataValueField = "Title"
                .DataBind()
                .Items.Insert(0, itm)
            End With
            ddlLoaiThiThuc.SelectedValue = "Thị thực"

        End Using
    End Sub
#End Region
#Region "Event for control "
    Protected Sub btnSave_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSave.Click
        'Ngay nhap canh<=Ngay hien tai; Ngay nhap canh<=Ngay den; 
        'Ngay nhap canh<=Han tam tru; Han tam tru >= Ngay den
        'Ngay sinh< ngay hien hanh; Tu ngay <=Ngay hien tai; 


        Dim ngaysinh As Date = StringToDate(txtDateofbirth.Text.Trim())
        If ngaysinh >= Now.Date Then
            Excute_Javascript("Alertbox('Ngày sinh phải trước ngày hiện tại');", Me.Page)
            btnSave.Enabled = True
            btnSave.UseSubmitBehavior = True
            Exit Sub
        End If

        Dim _EntryDate As Date = StringToDate(txtEntrydate.Text.Trim())
        Dim _FromDate As Date = StringToDate(txtFromdate.Text.Trim())
        Dim _ExpiredDate As Date = StringToDate(txtExpiredDate.Text.Trim())

        If _EntryDate > Now.Date Then
            Excute_Javascript("Alertbox('Ngày [nhập cảnh] phải trước hoặc bằng ngày [hiện tại]');", Me.Page)

            Exit Sub
        End If
        If _EntryDate > _FromDate Then
            Excute_Javascript("Alertbox('Ngày [nhập cảnh] phải trước hoặc bằng ngày [Tạm trú từ ngày]');", Me.Page)

            Exit Sub
        End If

        Dim _HanThiThuc As Date = StringToDate(txtThoiHanThiThuc.Text)
        Dim _ToDate As Date = StringToDate(txtTodate.Text.Trim())
        If _EntryDate > _HanThiThuc Then
            Excute_Javascript("Alertbox('Ngày [nhập cảnh] phải trước hoặc bằng ngày [Hạn thị thực / Tạm trú]');", Me.Page)
            Exit Sub
        End If

        If _ToDate > _HanThiThuc Then
            Excute_Javascript("Alertbox('Ngày [Tạm trú đến ngày] phải trước hoặc bằng ngày [Hạn thị thực / Tạm trú]');", Me.Page)
            Exit Sub
        End If

        'If _EntryDate > _ExpiredDate Then
        '    Excute_Javascript("Alertbox('Ngày [nhập cảnh] phải trước hoặc bằng ngày [ngày tạm trú đến ngày]');", Me.Page)

        '    Exit Sub
        'End If


        'If _FromDate > _ExpiredDate Then
        '    Excute_Javascript("Alertbox('Ngày [ngày được phép tạm trú] phải trước hoặc bằng [Tạm trú từ ngày]');", Me.Page)
        '    btnSave.Enabled = True
        '    btnSave.UseSubmitBehavior = True
        '    Exit Sub
        'End If

        ' kiem tra ks chung cu
        If hidChungCu.Value = 1 AndAlso txtAddress.Text.Trim() = "" Then
            Excute_Javascript("Alertbox('Hãy nhập địa chỉ khách ở');", Me.Page)
            btnSave.Enabled = True
            btnSave.UseSubmitBehavior = True
            Exit Sub
        End If

        'check Ngay cap thi thuc
        Dim ngaycapTT As Date = StringToDate(txtNgayCapThiThuc.Text.Trim())
        Dim ThoiHanTT As Date = StringToDate(txtThoiHanThiThuc.Text.Trim())
        If ngaycapTT > Now.Date Then
            Excute_Javascript("Alertbox('Ngày cấp thị thực trước hoặc bằng ngày hiện tại');", Me.Page)
            btnSave.Enabled = True
            btnSave.UseSubmitBehavior = True
            Exit Sub
        End If

        If ThoiHanTT < ngaycapTT Then
            Excute_Javascript("Alertbox('Ngày [ngày cấp thị thực] phải trước  [thời hạn thị thực]');", Me.Page)
            btnSave.Enabled = True
            btnSave.UseSubmitBehavior = True
            Exit Sub
        End If



        Dim _HotelId As Integer = Session("HotelId")
        Using data As New VSEntities
            Dim p As New VSModel.Customer
            Try
                'CHECK DU LIEU NHAP TRUNG
                'Dim k = (From q In data.Customers Where q.FullName = txtFullname.Text And q.PasspostNumber = txtPasspostnumber.Text And q.HotelId = _HotelId Select q).FirstOrDefault

                'If k Is Nothing Then
                p.FullName = txtFullname.Text.Trim()
                p.Sex = ddlSex.SelectedValue
                p.DateOfBirth = ngaysinh
                p.DateOfBirthType = ddlDateofbirthtype.SelectedValue
                p.CountryCode = ddlCountryname.SelectedValue 'txtCountrycode.Text.Trim()
                p.CountryName = ddlCountryname.SelectedItem.Text

                'p.Object = ddlObject.SelectedValue
                'p.Career = txtCareer.Text.Trim()

                p.PasspostNumber = txtPasspostnumber.Text.Trim()
                p.EntryDate = _EntryDate
                p.GateCode = ddlGatename.SelectedValue
                p.GateName = ddlGatename.SelectedItem.Text
                p.EntryPurposeCode = ddlEntrypurposename.SelectedValue
                p.EntryPurposeName = ddlEntrypurposename.SelectedItem.Text

                p.ExpiredDate = _ExpiredDate
                p.TemporaryResidenceCard = txtTemporaryresidencecard.Text.Trim()
                p.FromDate = _FromDate
                p.ToDate = StringToDate(txtTodate.Text.Trim())
                p.AgencyWelcome = txtAgencywelcome.Text.Trim()
                p.Address = txtAddress.Text.Trim()

                p.Creator = Session("UserName")
                p.Created = Now

                p.HotelId = Session("HotelId")

                'add new
                p.PasspostType = ddlLoaiHoChieu.SelectedValue
                p.SoThiThuc = txtSoThiThuc.Text
                p.LoaiThiThuc = ddlLoaiThiThuc.SelectedValue
                p.ThoiHanThiThuc = StringToDate(txtThoiHanThiThuc.Text)
                p.NgayCapThiThuc = StringToDate(txtNgayCapThiThuc.Text)
                p.CoQuanCapThiThuc = txtCoQuanCapThiThuc.Text


                data.Customers.AddObject(p)
                data.SaveChanges()

                Try
                    Dim curDate As DateTime = Now.Date
                    Dim k = (From q In data.HotelReports Where q.HotelId = _HotelId And q.DateReport = curDate Select q).FirstOrDefault
                    If k Is Nothing Then
                        Dim newObj As New HotelReport
                        newObj.HotelId = _HotelId
                        newObj.DateReport = curDate
                        data.HotelReports.AddObject(newObj)
                        data.SaveChanges()
                    End If
                Catch ex As Exception

                End Try

                'Insert_App_Log("Insert Advertise:" & txtTitle.Text.Trim & "", Function_Name.Advertisement, Audit_Type.Create, Request.ServerVariables("REMOTE_ADDR"), Session("UserName"))
                Excute_Javascript("Alertbox('Thêm thông tin thành công.');", Me.Page, True)

                'xoa trang mot so thong tin
                txtFullname.Text = ""
                txtDateofbirth.Text = ""
                ddlDateofbirthtype.SelectedIndex = -1
                txtCountrycode.Text = ""
                ddlCountryname.SelectedIndex = -1
                txtExpiredDate.Text = ""
                '   txtCareer.Text = ""
                txtPasspostnumber.Text = ""
                txtTodate.Text = ""
                txtTemporaryresidencecard.Text = ""
                txtEntrydate.Text = ""
                ddlLoaiHoChieu.SelectedIndex = -1
                txtSoThiThuc.Text = ""
                txtThoiHanThiThuc.Text = ""
                txtNgayCapThiThuc.Text = ""
                txtCoQuanCapThiThuc.Text = ""
                ddlLoaiThiThuc.SelectedIndex = -1
                'CUA KHAU NHAP CANH, MUC DICH NHAP CANH, DOI TUONG,TU NGAY, CQ TO CHUC DON.
                'enable submit




                'End If
            Catch ex As Exception
                log4net.Config.XmlConfigurator.Configure()
                log.Error("Error error " & AddTabSpace(1) & Session("Username") & AddTabSpace(1) & "IP:" & GetIPAddress(), ex)
                Excute_Javascript("Alertbox('Cập nhật thất bại vui lòng kiểm tra lại.');", Me.Page, True)
            End Try
        End Using
    End Sub
    
#End Region

    Protected Sub btnHuy_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnHuy.Click
        Response.Redirect("danh-sach-khach-tam-tru.html")
    End Sub


    Protected Sub btnKiemTra_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnKiemTra.Click
        Using _data As New VSEntities
            Dim _HotelId As Integer = Session("HotelId")
            Dim p As Customer = (From q In _data.Customers Where q.PasspostNumber = txtPasspostnumber.Text And q.HotelId = _HotelId Order By q.Created Descending Select q).FirstOrDefault
            If Not p Is Nothing Then

                txtFullname.Text = IIf(IsNothing(p.FullName) = True, "", p.FullName)
                ddlSex.SelectedValue = IIf(IsNothing(p.Sex) = True, "", p.Sex)

                If Not p.DateOfBirth Is Nothing Then
                    txtDateofbirth.Text = CType(p.DateOfBirth, Date).ToString("dd/MM/yyy")
                End If
                ddlDateofbirthtype.Text = IIf(IsNothing(p.DateOfBirthType) = True, "", p.DateOfBirthType)

                txtCountrycode.Text = IIf(IsNothing(p.CountryCode) = True, "", p.CountryCode)
                ddlCountryname.SelectedValue = IIf(IsNothing(p.CountryCode) = True, "", p.CountryCode)
                'ddlObject.SelectedValue = IIf(IsNothing(p.Object) = True, "", p.Object)
                'txtCareer.Text = IIf(IsNothing(p.Career) = True, "", p.Career)
                txtPasspostnumber.Text = IIf(IsNothing(p.PasspostNumber) = True, "", p.PasspostNumber)


                If Not p.EntryDate Is Nothing Then
                    txtEntrydate.Text = CType(p.EntryDate, Date).ToString("dd/MM/yyy")
                End If


                txtGatecode.Text = IIf(IsNothing(p.GateCode) = True, "", p.GateCode)
                ddlGatename.SelectedValue = IIf(IsNothing(p.GateCode) = True, "", p.GateCode)

                txtEntrypurposecode.Text = IIf(IsNothing(p.EntryPurposeCode) = True, "", p.EntryPurposeCode)

                If Not p.EntryPurposeCode Is Nothing AndAlso p.EntryPurposeCode <> "--- Chọn ---" AndAlso p.EntryPurposeCode <> "" Then
                    ddlEntrypurposename.SelectedValue = p.EntryPurposeCode
                End If


                If Not p.ExpiredDate Is Nothing Then
                    txtExpiredDate.Text = CType(p.ExpiredDate, Date).ToString("dd/MM/yyy")
                End If


                txtTemporaryresidencecard.Text = IIf(IsNothing(p.TemporaryResidenceCard) = True, "", p.TemporaryResidenceCard)
                'If Not p.FromDate Is Nothing Then
                '    txtFromdate.Text = CType(p.FromDate, Date).ToString("dd/MM/yyy")
                'End If
                'If Not p.ToDate Is Nothing AndAlso p.ToDate <> StringToDate("01/01/1900") Then
                '    txtTodate.Text = CType(p.ToDate, Date).ToString("dd/MM/yyy")
                'End If


                txtAgencywelcome.Text = IIf(IsNothing(p.AgencyWelcome) = True, "", p.AgencyWelcome)
                txtAddress.Text = IIf(IsNothing(p.Address) = True, "", p.Address)
                ' txtPrinteddate.Text = IIf(IsNothing(p.PrintedDate) = True, "", p.PrintedDate)

                'add new
                ddlLoaiHoChieu.SelectedValue = IIf(IsNothing(p.PasspostType) = True, "", p.PasspostType)
                txtSoThiThuc.Text = IIf(IsNothing(p.SoThiThuc) = True, "", p.SoThiThuc)
                ddlLoaiThiThuc.Text = IIf(IsNothing(p.LoaiThiThuc) = True, "", p.LoaiThiThuc)
                If Not p.ThoiHanThiThuc Is Nothing Then
                    txtThoiHanThiThuc.Text = CType(p.ThoiHanThiThuc, DateTime).ToString("dd/MM/yyyy")
                End If
                If Not p.NgayCapThiThuc Is Nothing Then
                    txtNgayCapThiThuc.Text = CType(p.NgayCapThiThuc, DateTime).ToString("dd/MM/yyyy")
                End If
                txtCoQuanCapThiThuc.Text = IIf(IsNothing(p.CoQuanCapThiThuc) = True, "", p.CoQuanCapThiThuc)
            Else
                Dim curURL As String = MainDomain + "nhap-truc-tuyen.html"
                Excute_Javascript("AlertboxRedirect('Không tồn tại khách này.','" + curURL + "?hc=" + txtPasspostnumber.Text + "');", Me.Page, True)
            End If

        End Using
    End Sub

End Class
